/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package olimpus.per;

import olimpus.obj.Paquetes;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Leonardo
 */
public class PaquetesPer
{  
   public static Paquetes obtenerPaquetes(Connection con, long xIdPaquete) throws Exception
   {
        Paquetes objPaquetes = new Paquetes();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                       "from PAQUETES "+
                                                         "where ID_PAQUETE=? ");
            st.setLong(1, xIdPaquete);

            ResultSet resultado = st.executeQuery();

            if(resultado.next())
            {
                objPaquetes.setIdPaquete(resultado.getLong("ID_PAQUETE"));
                objPaquetes.setNombre(resultado.getString("NOMBRE"));
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return objPaquetes;
   }

   public static boolean existePaquetes(Connection con, long xIdPaquete) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select count(*) as EXISTE " +
                                                      "from PAQUETES " +
                                                         "where ID_PAQUETE=? ");

            st.setLong(1, xIdPaquete);

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }
   
   public static boolean existePaquetes(Connection con, String xNombre) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select "
                                                    + "    count(*) as EXISTE "
                                                    + "from "
                                                    + "    PAQUETES "
                                                    + "where  "
                                                    + "    upper(rtrim(ltrim(NOMBRE))) = ?");

            st.setString(1, xNombre.toUpperCase().trim());

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }

   public static ArrayList<Paquetes> obtenerColeccionPaquetes(Connection con) throws Exception
   {
        ArrayList colPaquetes = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from PAQUETES");

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Paquetes objPaquetes = new Paquetes();

                objPaquetes.setIdPaquete(resultado.getLong("ID_PAQUETE"));
                objPaquetes.setNombre(resultado.getString("NOMBRE"));

                colPaquetes.add(objPaquetes);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colPaquetes;
    }
   
    public static ArrayList<Paquetes> busquedaColeccionPaquetes(Connection con, String xTextoBuscar) throws Exception
    {
        ArrayList colPaquetes = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from PAQUETES where " +
                                                      "NOMBRE like ('%' + ? + '%') ");

            st.setString(1, xTextoBuscar);
            
            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Paquetes objPaquetes = new Paquetes();

                objPaquetes.setIdPaquete(resultado.getLong("ID_PAQUETE"));
                objPaquetes.setNombre(resultado.getString("NOMBRE"));

                colPaquetes.add(objPaquetes);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colPaquetes;
    }

    public static void altaPaquetes(Connection con, Paquetes xObjPaquetes) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("insert into PAQUETES " +
                                                      "values (?,?)");

            st.setLong(1, xObjPaquetes.getIdPaquete());
            st.setString(2, xObjPaquetes.getNombre());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void bajaPaquetes(Connection con, Paquetes xObjPaquetes) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("delete from PAQUETES " +
                                                         "where ID_PAQUETE=? ");

            st.setLong(1, xObjPaquetes.getIdPaquete());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void modificaPaquetes(Connection con, Paquetes xObjPaquetes) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("update PAQUETES " +
                                                      "set NOMBRE=? "+
                                                         "where ID_PAQUETE=? ");

            st.setString(1, xObjPaquetes.getNombre());
            st.setLong(2, xObjPaquetes.getIdPaquete());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }
}
